:art: Support maintenance_tracking_info_subscribe

huangqimin001 3 years ago
parent
commit
4e5f91bb92
1 changed files with 28 additions and 0 deletions
  1. 28 0
      api/maintenance_views.py

+ 28 - 0
api/maintenance_views.py

@@ -264,4 +264,32 @@ def maintenance_tracking_info_callback(request):
264 264
     maintenance_id = request.GET.get('maintenance_id', '')
265 265
     type_ = request.GET.get('type', 'tracking')  # tracking / back_tracking
266 266
 
267
+    param = request.POST.get('param', '')
268
+
269
+    if not param:
270
+        return response()
271
+
272
+    try:
273
+        callback_json = json.loads(param[0])
274
+    except Exception:
275
+        return response()
276
+
277
+    tracking_info = callback_json.get('lastResult', {})
278
+
279
+    if not tracking_info:
280
+        return response()
281
+
282
+    try:
283
+        maintenance = MaintenaceInfo.objects.get(id=maintenance_id, status=True)
284
+    except MaintenaceInfo.DoesNotExist:
285
+        return response(MaintenanceStatusCode.MAINTENACE_NOT_FOUND)
286
+
287
+    if type_ == 'tracking':
288
+        maintenance.tracking_info = tracking_info
289
+        maintenance.tracking_signed = is_tracking_signed(tracking_info)
290
+    else:
291
+        maintenance.back_tracking_info = tracking_info
292
+        maintenance.back_tracking_signed = is_tracking_signed(tracking_info)
293
+    maintenance.save()
294
+
267 295
     return response()